Birdsong Separation Using FIR Filters

Introduction

In this project-based lab, we are given a piece of audio with two bird sounds mixed in. Through the human ear, we can simply distinguish the two sounds. Then you can think about how, through technical means, you can turn this piece of audio mixed with two bird sounds into two pieces of audio with separate bird sounds? After running this lab, you will have the answer.

The purpose of this lab is to separate the two bird sounds in the audio and get separate bird sounds. To achieve this, we will use C++ language to write FIR filter for separation at HLS (high level synthesis) level, and use parallel and pipelined hardware design ideas and AXI4 data transfer protocol to perform hardware acceleration on PYNQ board. We also use python for software code writing to show the advantages of hardware acceleration after comparing the two.

Part Topic Description Environment
1 Software Implementation Read in an audio clip and visualize the audio in the frequency domain Jupyter Notebook
Designing a high-pass filter to remove low-frequency birdsong
2 HLS Kernel Programming Determine the Design Specifications AMD Vitis HLS 2023.2
Code hoisting to remove unnecessary conditional operations
Array partitioning to enable loop parallelism
Loop split for tailored optimizations
Loop Unrolling and Pipelining
Putting it All Together -- Kernel Code Analysis
3 System-level Integration Create the kernel Graph and the test bench Jupyter Notebook
Analyze AXI4 Data Transfer Protocol
Load the overlay and run the application on the PYNQ framework
Visualize the results and analyze the performance

Copyright© 2024 Advanced Micro Devices